// bool, Obj This, Obj target

Unit this;
this = This.AsUnit();

if (!.IsAlive())          return false;
if (!.HasSpecial(invisibility)) return false;

if (!target.IsAlive()) return false;
if (.IsEnemy(target))  return false;
if (target.AsUnit)
	if (target.AsUnit.InHolder)   return false;
if (!.CanSee(target))  return false;
if (target.AsShip.IsValid) return false;

return true;
